class Solution {
public:
    int jump(vector<int>& nums) {
        int res = 1;
        int max_stride = nums[0];
        int cnt_stride = nums[0];
        for(int i = 1; i < nums.size()-1; i++)
        {
            int val = i + nums[i];
            if(cnt_stride>=i && cnt_stride<val)
            {
                max_stride = max_stride > val ? max_stride : val;
            }
            if(cnt_stride == i)
            {
                cnt_stride = max_stride;
                res += 1;
            }
        }

        return nums.size()==1 ? 0 : res;
    }
};